package cn.iocoder.yudao.module.bill.service.bill_cate;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.bill.controller.admin.bill_cate.vo.*;
import cn.iocoder.yudao.module.bill.controller.admin.common.CategoryNode;
import cn.iocoder.yudao.module.bill.dal.dataobject.bill_cate.BillCateDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 账单分类 Service 接口
 *
 * @author mmciel
 */
public interface BillCateService {

    /**
     * 创建账单分类
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCate(@Valid BillCateSaveReqVO createReqVO);

    /**
     * 更新账单分类
     *
     * @param updateReqVO 更新信息
     */
    void updateCate(@Valid BillCateSaveReqVO updateReqVO);

    /**
     * 删除账单分类
     *
     * @param id 编号
     */
    void deleteCate(Long id);

    /**
     * 获得账单分类
     *
     * @param id 编号
     * @return 账单分类
     */
    BillCateDO getCate(Long id);

    /**
     * 获得账单分类列表
     *
     * @param listReqVO 查询条件
     * @return 账单分类列表
     */
    List<BillCateDO> getCateList(BillCateListReqVO listReqVO);

    List<CategoryNode> getCateTree();
}